1. Field of the Invention
Embodiments of the present invention relate generally to network communications and more specifically to a system and method for intelligently load balancing and failing over network traffic using a hash engine.
2. Description of the Related Art
Performance and reliability are key requirements for modern computer networks. When a new network connection is initiated on a computing device that includes a plurality of network interface cards (“NICs”), the operating system typically selects a NIC for that connection without regard to the utilization or error rate of each NIC. One disadvantage of such environments is that new connections are often assigned to a NIC that is overloaded and/or unreliable, leading to reduced network performance for the new connection and possibly for other existing connections on the selected NIC.
Some prior art solutions attempt to avoid assigning new connections to overloaded and/or unreliable NICs by maintaining a sophisticated data structure containing “connection state.” Analyzing this data structure allows a network device driver to determine which NICs are overloaded and/or unreliable. However, the structure of this connection state does not lend itself to efficiently identifying which NIC has been assigned to each connection or to efficiently redistributing connections from an overloaded or unreliable NIC to a fully functional NIC. Additionally, maintaining and analyzing this connection state is computationally expensive, which can degrade computational and network performance for the computing device.
As the foregoing illustrates, what is needed in the art is a more efficient technique for distributing and redistributing network connections across NICs in a computing device.